//
//  Status.swift
//  微博项目
//
//  Created by mac on 16/1/19.
//  Copyright © 2016年 mac. All rights reserved.
//

import UIKit

class Status: NSObject {

    //微博创建时间
    var created_at: String?
    //微博id   OC: id是任意对象的关键字
    var id: Int64 = 0
    //微博信息内容
    var text:String?
    //微博来源
    var source: String?
    //用户  如果不做任何特殊处理 最终会对应上一个字典
    var user: User?
    
    //配图视图
    var pic_urls: [[String : String]]? {
        didSet {
            //完成配图视图的数组的设置之后 开始给imageURLs赋值
            //didSet 只需要设置一次  但是 计算型属性 每次都要进行计算
            //快速判断 urls不为空 并且(&&) 不为空的urls的数量不为0
            if let urls = pic_urls where urls.count != 0 {
                
                //实例化属性
                imageURLs = [NSURL]()
                for item in urls {
                    let urlString = item["thumbnail_pic"]
                    //强制解包 表示相信后端一定能够给一个urlString 并且urlStirng一定可以转换为 NSURL对象
                    let imageURL = NSURL(string: urlString!)!
                    //添加图片url地址
                    imageURLs?.append(imageURL)
                }
            }
        }
    }
    
    //计算型属性 可以实现 url类型的转换
    var imageURLs: [NSURL]?
    
    
    //构造方法
    init(dict: [String : AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dict)
    }
    
    
    //重写 KVC赋值的方法
    override func setValue(value: AnyObject?, forKey key: String) {
        
        if key == "user" {
            //value 就是一个字典对象
            if let dict = value as? [String : AnyObject] {
                //能够转化为[String : AnyObject]字典对象
                //字典转模型
                user = User(dict: dict)
                
                //return  非常非常关键  前面的字典转模型 就白做了
                return
            }
        }
        
        super.setValue(value, forKey: key)
    }
    
    //过滤
    override func setValue(value: AnyObject?, forUndefinedKey key: String) { }
    
    //重写对象的描述信息
    override var description: String {
        
        //使用kvc方式 获取对象 的字典信息
        let keys = ["created_at","id","text","source"]
        let dict = self.dictionaryWithValuesForKeys(keys)
        return dict.description
        
    }
    
}

